home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload Trio 2 / Shareware Overload Trio Volume 2 (Chestnut CD-ROM).ISO / dir42 / c7105.zip / TPXFIXES.DOC < prev    next >
Text File  |  1994-03-02  |  12KB  |  257 lines

  1. Listing of all template fixes for the current release of CDD (3007.1)
  2. This file covers Template Releases 3007.101 to 3007.105
  3.  
  4. ──────────────────────────────────────────────────────────────────────────────
  5. Fixes from 3007.100 to 3007.101
  6.  
  7. BROWSEs, when clicking the mouse in an area not occupied with a field(), which
  8. complets ACCEPT with a FIELD() value of 0.  Behavior prior to 3007.100 was to
  9. clear the field in the list box that corresponded to any locator (commonly
  10. known as "trashing the list box").  Behavior for 3007.100 was to not "trash
  11. the list box", but to re-read the record (and associated lookups) when moving
  12. about the screen using TAB and SHIFT-TAB.  Neither behavior occurs in 3007.101
  13.  
  14. BROWSEs, the "When Field is Completed" and "When Field is Selected" code for
  15. fields on the screen was not being executed in versions prior to 3007.101.
  16.  
  17. BROWSE totals were not being correctly handled on aborted deletions.
  18.  
  19. FORMs were not handling Logging of multiple instances of the same physical
  20. file.   A #PROMPT now asks to "Disable RI Logout" in this case.  This case
  21. only applies to using "ALIASed" files, as described in the "Multiple
  22. Relations" example in the Advanced Example program.
  23.  
  24. FORMs were not including %Primary in the RI LOGOUT() statements.
  25.  
  26. PRINTs were not placing a trailing backslash (\) in the correct position
  27. of the TempFile assignment when creating a TempFile name for use with the
  28. SCREEN option (not clipping before concatenating).
  29.  
  30. BATCHs had EMBED('Setup Procedure') in the wrong place.  That EMBED should
  31. have been directly after the CODE statement.
  32.  
  33. VIEWs were not correctly handling the saving of screen size prior to entry,
  34. and the restoration of size upon procedure exit.
  35.  
  36.  
  37. ──────────────────────────────────────────────────────────────────────────────
  38. Fixes from 3007.101 to 3007.102
  39.  
  40. BROWSEs, pressing the CHANGE and DELETE button was not updating totals.  The
  41. problem was in the handling of the FIELD() of ?CHANGE or ?DELETE correctly.
  42.  
  43. BROWSEs, Automatic ADD code (when browse empty) not updating totals.
  44.  
  45. BROWSES, having a pre-?List field on the screen used as a Range Limit field
  46. was not operating correctly (the field was being filled with value from record
  47. before filling ?List, eliminating entered value).
  48.  
  49. REPORTs, generating duplicate PRINT::pre::FooterFields ROUTINE labels.
  50.  
  51. FORMs, not correctly handling the opening and closing of files used in the RI
  52. processing.  In 3007.102, I added one (two if closing unused files) ROUTINE(s)
  53. each for Update and Delete.  These ROUTINES are called in ConstrainedUpdate
  54. ROUTINE and ConstrainedDelete ROUTINE, preventing file opening flags from
  55. being mishandled.  This fix is sufficient in 98% of the cases using RI.  In
  56. the future, a more complete fix will be provided, but I need to determine the
  57. impact and plan accordingly.
  58.  
  59. CHILDs, not generating the correct FillQueue ROUTINE with multi-part keys.
  60.  
  61.  
  62. ──────────────────────────────────────────────────────────────────────────────
  63. Fixes from 3007.102 to 3007.103
  64.  
  65. BROWSE  - When coming back from Update Procedure, Browse was not always
  66. getting SELECTed.  Moved SELECT(?List) from each individual portion of code
  67. that called Update Procedure to UpdateProcedure ROUTINE, insuring that the
  68. call is always made, and reducing overhead (a little).
  69.  
  70. BROWSE - Removed the explicit screen close, and the "Before Screen
  71. Closing" EMBED.  This EMBED has only been in 3007, and should never have been
  72. released.  Please move any code in this EMBED to "End of Procedure" EMBED.
  73.  
  74. BROWSE, LOOKUP, VALIDATE, SELECT - Added Edit Code to the Locator (CASE
  75. FIELD() code).
  76.  
  77. BROWSE, LOOKUP, VALIDATE, SELECT - Did not respond to Hot Keys on Insert,
  78. Change, or Delete buttons.
  79.  
  80. BROWSE - If called in Select Mode, and if no Edit Buttons were on-screen, the
  81. Selection was made whenever the ?List was completed, rather than dependent on
  82. KEYCODE().
  83.  
  84. LOOKUP, VALIDATE - Added Variable SAV::PullDownOpened, decalred when a
  85. PullDown is Declared.  This variable is used to control the closing of a
  86. PullDown structure inside the procedure.  It is impossible to remove both
  87. calls to CLOSE(PullDown) because CHANGE() needs access to the screen that
  88. called the Lookup or Validate, and if the PullDown is active it's possible
  89. that the CHANGE could be misdirected.
  90.  
  91. FORM21 - Was missing RI Initialization Code
  92.  
  93. FORM21 - Was incorrectly handling Auto-Increment Keys.
  94.  
  95. FILE - Was not resetting the active directory correctly, due to the placement
  96. of a trailing backslash (\) in the directory name.  Added code to clip off
  97. the final path character.
  98.  
  99. FORM - LOC:Message was being disabled at various times during FORM
  100. processing, most notably the DELETING of a record.  LOC:Message not stays
  101. ENABLED.
  102.  
  103. FORM, MULTIPAGE - #IF Stack overflows were being experienced on dense
  104. Relation Trees (fix and six levels of constrained relations).  I relocated
  105. the recursicve call in UpdateRelationSearch and DeleteRelationSearch, removing
  106. two #IFs from the stack for each call.
  107.  
  108. FORM, MULTIPAGE, FORM21 - Moved the #INSERTs to AbortTransactionMsg to before
  109. the issuing of the ROLLBACK command.  This allows the ERROR received to be
  110. captured correctly.  The call to ShowWarning takes place AFTER the ROLLBACK,
  111. to try to prevent users from CtrlBreaking out of the program during
  112. processing.
  113.  
  114. FORM, MULTIPAGE, PAGEOF - The SecondaryLookups ROUTINE was issuing a DISPLAY
  115. before the screen was opened, causing erratic behaviour in the calling
  116. procedure. The DISPLAY was removed from SecondaryLookups ROUTINE.  A DISPLAY
  117. already took place after the screen was opened.
  118.  
  119. FORM, MULTIPAGE, PAGEOF - The call to SecondaryLookups was being made only if
  120. the Action was Change or Delete.  This resulted in lookups not being
  121. performed after fields were primed on an add, and values from a previous set
  122. of Lookups being displayed on an add.
  123.  
  124. LIST - Added "Process Selected Record" EMBED, to be used when Hot Records are
  125. enabled.  This brings the operation of the LIST procedure more in line with
  126. the functionality outlined in the HELP for the procedure.
  127.  
  128. REPORT - Moved INSERT to %SaveFooterFields to after record validation code.
  129.  
  130. REPORT - Code to save key fields during Group Breaks was only saving the
  131. field that corresponded to the first Group Break of the KEY.  It should have
  132. been saving all key fields up to and including the first Group Break.
  133.  
  134. SCREEN - Added CLOSE(PullDown) to ProcedureReturn ROUTINE.
  135.  
  136. SCREEN - Added DISPLAY after Setup Screen EMBED.
  137.  
  138. VIEW - When the ?ChangeMode button was pressed, and the screen was in 50 Row
  139. mode, the screen was placed into a Virtual Screen Mode.  This was due to
  140. SetArea being set before SetText, in essence, we put the screen into 25
  141. row area with a 50 row window, then made the window 25 rows, but the screen
  142. was still in 50 row mode.
  143.  
  144.  
  145. ──────────────────────────────────────────────────────────────────────────────
  146. Fixes from 3007.103 to 3007.104
  147.  
  148. FILE - No longer generates Compile ERROR on SETPATH command in ProcedureReturn
  149. ROUTINE.
  150.  
  151.  
  152. ──────────────────────────────────────────────────────────────────────────────
  153. Fixes from 3007.104 to 3007.105
  154.  
  155. All Templates with PullDowns - Added pulldown handling code consisting of a
  156. byte flag, declared as SAV::PullDownOpened.  On the line after every
  157. OPEN(%PullDown) in each procedure, this flag is set to true, and after every
  158. CLOSE(%PullDown) the flag is set to false.  IF you manipulate the PullDown in
  159. your EMBED code, you need to manipulate this flag for the procedure to know
  160. what to do!
  161.  
  162. Form and MultiPg - Rewrote the AutoIncrement code.  AutoIncrement now works
  163. with any key structure that I can think up to AutoIncrement.  The following
  164. rules have changed since 3007.105:
  165.  
  166.   1.     Higher level key elements are no longer cleared to high values.
  167.          The clearing to high levels actually accomplished little, since you
  168.          needed to use a PRIMEKEY formula to set up multiple key elements.
  169.  
  170.   2.     AutoNumber ROUTINE now calls two ROUTINES, SaveAutonumber and
  171.          NextAutoNumber.  This separation was made so that AutoNumber would
  172.          work with recurring add procedures (Clear or Retain Record).
  173.  
  174.   3.     AutoNumbering keys now have a variable declared to store the value
  175.          of each key element.  These variables are named Auto:%KeyField,
  176.          where %KeyField is the labal of the key element being stored.
  177.  
  178.          If keys exist for %Primary which prohibit duplicates, no NOT exclude
  179.          nulls, and are not AutoNumbering, additional variables for the
  180.          Autonumbering key fields are created.  These variables are named
  181.          Auto:Hold:%KeyField. These values are used to detect if the
  182.          autonumber values are generated the same on two consecutive passes
  183.          through the AutoNumber code.  If so, a warning is generated.  If you
  184.          get the error:  "When adding a record, an unexplained Duplicate was
  185.          encountered."  This warning is due to a design flaw in the generated
  186.          program, because of which the end-user is able to save a record with
  187.          empty key fields in a unique key that does not exclude nulls.  The
  188.          entry fields corresponding to the key fields need to be required.
  189.          Otherwise, how can an AutoNumber record be created?
  190.  
  191.   4.     In the SaveAutonumber ROUTINE, we prime the key values for every
  192.          autonumbering key.  Here's how we do it:
  193.  
  194.          a.        Process PRIMEKEY formulae to prime values.  This is not
  195.                    necessary with the 3007.105 templates, because in the
  196.                    absence of PRIMEKEY formulae we use the key field values
  197.                    that are already present in the record buffer.  In
  198.                    other words, with 3007.105 to prime your key fields you
  199.                    only have to make the appropriate value assignments in your
  200.                    "Setup Procedure" EMBED.
  201.  
  202.          b.        Use the current values of the key fields as they
  203.                    are in the %Primary record buffer.  Since the Browse
  204.                    resets Range Limit values after clearing the record on an
  205.                    ADD, in most cases this should not need to be done.
  206.  
  207.   5.     In NextAutoNumber, we search each autonumber key for the next
  208.          highest number, using the values saved in SaveAutoNumber.  After
  209.          we've gotten the high value for each field, we restore values as
  210.          they were saves in SaveAutoNumber, restore the new AutoNumber
  211.          values, and attempt to add.  If we fail because of duplicates, we
  212.          try again.  If we fail for any other reason, we immediatly inform
  213.          the user.
  214.  
  215.   6.     %Primary is only being HELD if SharedFiles is set on.  In a single
  216.          user system this HOLD is not necessary.
  217.  
  218. Several Misc Templates - Replaced BREAK and RETURN statements with DO
  219. ProcedureReturns, as necessary.
  220.  
  221. Several Misc Templates - Move last ShowWarning constructions to WARNINGS.TPX
  222.  
  223. Relation.TPX - In the InitLogout and BtrieveTrxFraming GROUPs, ShowWarning
  224. construction was taking place after the ROLLBACK, which clears out ERROR()
  225. and ERRORCODE(), making the warning uninformative, to say the least.
  226.  
  227. Child - Added INSERT to %StandardHeader
  228.  
  229. View - Changed final SetPath to allow setting path back to root directory.
  230.  
  231. Form21 and MemForm21 - Moved the CASE KEYCODE() handling to a GROUP,
  232. %Form21KeyHandling.  This GROUP is located at the tail of CPD21.TPX, and
  233. allows easier repairs.
  234.  
  235. Clarion.TPL - Added ProcedureReturn ROUTINEs to CheckOpen, DiskError, and
  236. ShowWarning procedures and functions.
  237.  
  238. Clarion.TPL - Added LOC::ReturnValue to CheckOpen() and DiskErr() functions.
  239. This value is RETURNed in ProcedureReturn.
  240.  
  241. Clarion.TPL - Added several new EMBED points in CheckOpen, DiskError, and
  242. ShowWarning.
  243.  
  244. MultiPg and Form21 - Made the Message Prompts 30 characters in length.
  245.  
  246. Reports - Again, fixed problems with Group Breaks.
  247.  
  248. Reports - were reporting the entire contents of a file, even if Range Limit
  249. set.
  250.  
  251. ScrnFlds.TPX - Was not generating code for fields that were not file related,
  252. i.e. Global and Local data.
  253.  
  254. Browse, Validate, Select, Lookup - Were not updating the record on a form
  255. called with CtrlEnter.  Added SETKEYCODE(EnterKey) to that condition.
  256.  
  257.